Services provided over the Internet, commonly referred to as web services or application services, are evolving. Likewise, technologies that facilitate such services are also evolving. A web service can be defined as any information source running business logic processes conveniently packaged for use by an application or end-user. Web services are increasingly becoming the means through which one can provide functionality over a network. Web services typically include some combination of programming and data that are made available from an application server for end users and other network-connected application programs. Web services range from such services as storage management and customer relationship management down to much more limited services such as the furnishing of a stock quote and the checking of bids for an auction item.
Activities focusing on defining and standardizing the use of web services include the development of Web Services Description Language (WSDL). WSDL is an Extensible Markup Language (XML) format for describing web services as a set of endpoints operating on messages containing either document-oriented or procedure-oriented information. The operations and messages are described abstractly, and then bound to a concrete network protocol and message format to define an endpoint. Related concrete endpoints are combined into abstract endpoints (services).
Currently, the advocated web service usage model is generally as follows.
(1) Services are implemented and deployed on one site, often referred to as the server side.
(2) Services are described using WSDL and are published via means such as UDDI (Universal Description, Discovery, and Integration), which is an XML-based registry for businesses worldwide to list themselves on the Internet by the web services they offer.
(3) Client applications use web services at another site, often referred to as the client side, by first interpreting one or more WSDL documents. Once interpreted, the clients can understand the characteristics of the associated service(s). For example, service characteristics may include service API specifications such as (a) input data type, (b) service input data format, (c) service access mechanism or style (e.g., RPC versus messaging), and (d) related encoding format.
(4) Client applications prepare their data in manners in which various particular web services understand.
(5) Client applications invoke a particular service according to the manner specified for the service, such as in an associated WSDL document.
Many differences exist among web services with respect to the format of input data and the manner in which they are invoked. For example, suppose one application service provider provides a service, getStockQuote, that requires a single input parameter, such as a conventional stock symbol (e.g., ORCL for Oracle Corp.). A client application that intends to invoke such a service needs to be written so that data within or output by the application is able to be analyzed to extract the stock symbol information. At runtime, the prepared symbol is passed to the getStockQuote service site using appropriate APIs.
However, suppose another application service provider provides a similar service that requires two input parameters, such as the stock symbol and the time of request. Hence, if a client application intends to invoke this second service, it needs to analyze and extract its data appropriately in regards to the required service input parameters. Therefore, if a single application was intended to invoke both services, the application would have to be hard-coded with service-specific API information and procedures. Furthermore, if the application was intended to invoke numerous services, the application would have to be hard-coded with service-specific API information and procedures related to each and every service that it intended to invoke.
As explained above, various web services may provide similar functionality but differ in many ways. Currently, in order to accommodate these differences, client applications need to be specifically designed for each one of the web services based on the anticipated usage of the application and related web services.
Based on the foregoing, there is a need for a generic framework for managing interaction between web services and applications that invoke web services.